home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Sound / AHI / Developer / examples / Low-level / PTdatatype / Data.h < prev    next >
C/C++ Source or Header  |  1997-04-18  |  3KB  |  119 lines

  1. /*
  2. **    Q&D Protracker DataType
  3. **
  4. **    Written by Martin Blom, based on the AIFF DataType by
  5. **    Olaf `Olsen' Barthel <olsen@sourcery.han.de>
  6. **    Public domain
  7. **
  8. ** :ts=8
  9. */
  10.  
  11. /******************************************************************************/
  12.  
  13. #include <intuition/intuitionbase.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <intuition/classes.h>
  16. #include <intuition/cghooks.h>
  17.  
  18. #include <dos/dosextens.h>
  19. #include <dos/dostags.h>
  20.  
  21. #include <exec/execbase.h>
  22. #include <exec/memory.h>
  23.  
  24. #include <datatypes/soundclass.h>
  25.  
  26. #include <devices/ahi.h>
  27.  
  28. #include <clib/intuition_protos.h>
  29. #include <clib/datatypes_protos.h>
  30. #include <clib/utility_protos.h>
  31. #include <clib/alib_protos.h>
  32. #include <clib/exec_protos.h>
  33. #include <clib/dos_protos.h>
  34.  
  35. #include <clib/ahi_protos.h>
  36.  
  37. #include <clib/macros.h>
  38.  
  39. #include <pragmas/intuition_pragmas.h>
  40. #include <pragmas/datatypes_pragmas.h>
  41. #include <pragmas/utility_pragmas.h>
  42. #include <pragmas/exec_pragmas.h>
  43. #include <pragmas/dos_pragmas.h>
  44.  
  45. #include <pragmas/ahi_pragmas.h>
  46.  
  47. #include <string.h>
  48.  
  49. #define MKID ((ULONG) ('M')<<24 | (ULONG) ('.')<<16 | (ULONG) ('K')<<8 | (ULONG) ('.'))
  50.  
  51. #include "/PT-AHIPlay/PT-AHIPlay.h"
  52.  
  53. /******************************************************************************/
  54.  
  55.     // Our custom library structure
  56.  
  57. struct ClassBase
  58. {
  59.     struct Library         LibNode;        // Exec link
  60.     UWORD             Pad;            // Longword alignment
  61.     Class            *SoundClass;        // The class this library implemnts
  62.  
  63.     struct ExecBase        *SysBase;        // Exec library
  64.     struct DosLibrary    *DOSBase;        // Dos library
  65.     struct Library        *IntuitionBase,        // Intuition library
  66.                 *UtilityBase,        // Utility library
  67.                 *DataTypesBase,        // DataTypes library
  68.                 *SuperClassBase;    // Sound datatype
  69.     struct MsgPort        *AHImp;
  70.     struct AHIRequest    *AHIio;
  71.     BYTE             AHIDevice, Pad2;
  72.     struct AHIBase        *AHIBase;
  73.  
  74.     struct SignalSemaphore     LockSemaphore;        // Shared access semaphore
  75.     BPTR             Segment;        // Library segment pointer
  76. };
  77.  
  78.     // Redirect references to global data into the library base
  79.  
  80. #define SysBase        ClassBase->SysBase
  81. #define DOSBase        ClassBase->DOSBase
  82. #define IntuitionBase    ClassBase->IntuitionBase
  83. #define UtilityBase    ClassBase->UtilityBase
  84. #define DataTypesBase    ClassBase->DataTypesBase
  85. #define SuperClassBase    ClassBase->SuperClassBase
  86. #define LockSemaphore    ClassBase->LockSemaphore
  87. #define SoundClass    ClassBase->SoundClass
  88. #define AHImp        ClassBase->AHImp
  89. #define AHIio        ClassBase->AHIio
  90. #define AHIDevice    ClassBase->AHIDevice
  91. #define AHIBase        ClassBase->AHIBase
  92. #define Segment        ClassBase->Segment
  93.  
  94. #define COMMAND_ERROR        (0)
  95. #define COMMAND_INIT        (1)
  96. #define COMMAND_START        (2)
  97. #define COMMAND_STOP        (3)
  98. #define COMMAND_END        (4)
  99. #define COMMAND_QUIT        (5)
  100.  
  101.  
  102. struct ObjectData
  103. {
  104.     struct Message         Message;
  105.     UWORD             Command;
  106.     struct Process        *Slave;            // Makes the mt_#? calls
  107.     BYTE             ModInitialized;
  108.     struct Hook         PlayerHook;
  109.     struct PTData         ptdata;
  110. };
  111.  
  112.  
  113. /******************************************************************************/
  114.  
  115.     // Preprocessor tricks
  116.  
  117. #define LIBENT            __asm
  118. #define REG(x)            register __ ## x
  119.